/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.sigu.entities;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Usuario2
 */
@Entity
@Table(name = "aca_alumnos_periodos", catalog= "sigu")
@NamedQueries({
    @NamedQuery(name = "AlumnosPeriodos.findAll", query = "SELECT a FROM AlumnosPeriodos a"),
    @NamedQuery(name = "AlumnosPeriodos.findByInstitucion", query = "SELECT a FROM AlumnosPeriodos a WHERE a.alumnosPeriodosPK.institucion = :institucion"),
    @NamedQuery(name = "AlumnosPeriodos.findByPeriodo", query = "SELECT a FROM AlumnosPeriodos a WHERE a.alumnosPeriodosPK.periodo = :periodo"),
    @NamedQuery(name = "AlumnosPeriodos.findByAlumno", query = "SELECT a FROM AlumnosPeriodos a WHERE a.alumnosPeriodosPK.alumno = :alumno"),
    @NamedQuery(name = "AlumnosPeriodos.findByCarrera", query = "SELECT a FROM AlumnosPeriodos a WHERE a.carrera = :carrera"),
    @NamedQuery(name = "AlumnosPeriodos.findByCursosMatriculados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.cursosMatriculados = :cursosMatriculados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreditosMatriculados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creditosMatriculados = :creditosMatriculados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCursosRetirados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.cursosRetirados = :cursosRetirados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreditosRetirados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creditosRetirados = :creditosRetirados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCursosAprobados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.cursosAprobados = :cursosAprobados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreditosAprobados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creditosAprobados = :creditosAprobados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCursosConvalidados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.cursosConvalidados = :cursosConvalidados"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreditosConvalidados", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creditosConvalidados = :creditosConvalidados"),
    @NamedQuery(name = "AlumnosPeriodos.findBySeccionReferencial", query = "SELECT a FROM AlumnosPeriodos a WHERE a.seccionReferencial = :seccionReferencial"),
    @NamedQuery(name = "AlumnosPeriodos.findByNivelReferencial", query = "SELECT a FROM AlumnosPeriodos a WHERE a.nivelReferencial = :nivelReferencial"),
    @NamedQuery(name = "AlumnosPeriodos.findByPromedioSemestral", query = "SELECT a FROM AlumnosPeriodos a WHERE a.promedioSemestral = :promedioSemestral"),
    @NamedQuery(name = "AlumnosPeriodos.findByOrdenSemestral", query = "SELECT a FROM AlumnosPeriodos a WHERE a.ordenSemestral = :ordenSemestral"),
    @NamedQuery(name = "AlumnosPeriodos.findByOrdenNivel", query = "SELECT a FROM AlumnosPeriodos a WHERE a.ordenNivel = :ordenNivel"),
    @NamedQuery(name = "AlumnosPeriodos.findByPromedioPonderado", query = "SELECT a FROM AlumnosPeriodos a WHERE a.promedioPonderado = :promedioPonderado"),
    @NamedQuery(name = "AlumnosPeriodos.findByOrdenPonderado", query = "SELECT a FROM AlumnosPeriodos a WHERE a.ordenPonderado = :ordenPonderado"),
    @NamedQuery(name = "AlumnosPeriodos.findByDocumentoAutoriza", query = "SELECT a FROM AlumnosPeriodos a WHERE a.documentoAutoriza = :documentoAutoriza"),
    @NamedQuery(name = "AlumnosPeriodos.findByResolucionNumero", query = "SELECT a FROM AlumnosPeriodos a WHERE a.resolucionNumero = :resolucionNumero"),
    @NamedQuery(name = "AlumnosPeriodos.findByResolucionFecha", query = "SELECT a FROM AlumnosPeriodos a WHERE a.resolucionFecha = :resolucionFecha"),
    @NamedQuery(name = "AlumnosPeriodos.findByCodigoReserva", query = "SELECT a FROM AlumnosPeriodos a WHERE a.codigoReserva = :codigoReserva"),
    @NamedQuery(name = "AlumnosPeriodos.findByObservacion", query = "SELECT a FROM AlumnosPeriodos a WHERE a.observacion = :observacion"),
    @NamedQuery(name = "AlumnosPeriodos.findByFechaMatricula", query = "SELECT a FROM AlumnosPeriodos a WHERE a.fechaMatricula = :fechaMatricula"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreacionUsuario", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creacionUsuario = :creacionUsuario"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreacionEstacion", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creacionEstacion = :creacionEstacion"),
    @NamedQuery(name = "AlumnosPeriodos.findByCreacionFecha", query = "SELECT a FROM AlumnosPeriodos a WHERE a.creacionFecha = :creacionFecha"),
    @NamedQuery(name = "AlumnosPeriodos.findByControlUsuario", query = "SELECT a FROM AlumnosPeriodos a WHERE a.controlUsuario = :controlUsuario"),
    @NamedQuery(name = "AlumnosPeriodos.findByControlEstacion", query = "SELECT a FROM AlumnosPeriodos a WHERE a.controlEstacion = :controlEstacion"),
    @NamedQuery(name = "AlumnosPeriodos.findByControlFecha", query = "SELECT a FROM AlumnosPeriodos a WHERE a.controlFecha = :controlFecha")})
public class AlumnosPeriodos implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected AlumnosPeriodosPK alumnosPeriodosPK;
    @Column(name = "carrera")
    private String carrera;
    @Column(name = "cursos_matriculados")
    private Integer cursosMatriculados;
    @Column(name = "creditos_matriculados")
    private Integer creditosMatriculados;
    @Column(name = "cursos_retirados")
    private Integer cursosRetirados;
    @Column(name = "creditos_retirados")
    private Integer creditosRetirados;
    @Column(name = "cursos_aprobados")
    private Integer cursosAprobados;
    @Column(name = "creditos_aprobados")
    private Integer creditosAprobados;
    @Column(name = "cursos_convalidados")
    private Integer cursosConvalidados;
    @Column(name = "creditos_convalidados")
    private Integer creditosConvalidados;
    @Column(name = "seccion_referencial")
    private String seccionReferencial;
    @Column(name = "nivel_referencial")
    private Integer nivelReferencial;
    @Column(name = "promedio_semestral")
    private BigDecimal promedioSemestral;
    @Column(name = "orden_semestral")
    private Integer ordenSemestral;
    @Column(name = "orden_nivel")
    private Integer ordenNivel;
    @Column(name = "promedio_ponderado")
    private BigDecimal promedioPonderado;
    @Column(name = "orden_ponderado")
    private Integer ordenPonderado;
    @Column(name = "documento_autoriza")
    private String documentoAutoriza;
    @Column(name = "resolucion_numero")
    private String resolucionNumero;
    @Column(name = "resolucion_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date resolucionFecha;
    @Column(name = "codigo_reserva")
    private String codigoReserva;
    @Column(name = "observacion")
    private String observacion;
    @Column(name = "fecha_matricula")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaMatricula;
    @Column(name = "creacion_usuario")
    private String creacionUsuario;
    @Column(name = "creacion_estacion")
    private String creacionEstacion;
    @Column(name = "creacion_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creacionFecha;
    @Column(name = "control_usuario")
    private String controlUsuario;
    @Column(name = "control_estacion")
    private String controlEstacion;
    @Column(name = "control_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date controlFecha;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "alumnosPeriodos")
    private Collection<AlumnoCursoSeccion> alumnoCursoSeccionCollection;
    @JoinColumn(name = "estado_registro", referencedColumnName = "estado_registro")
    @ManyToOne
    private EstadoRegistros estadoRegistros;

    @JoinColumns({
        @JoinColumn(name = "institucion", referencedColumnName = "institucion", insertable = false, updatable = false),
        @JoinColumn(name = "alumno", referencedColumnName = "alumno", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Alumnos alumnos;
        
    @JoinColumns({
        @JoinColumn(name = "institucion", referencedColumnName = "institucion", insertable = false, updatable = false),
        @JoinColumn(name = "periodo", referencedColumnName = "periodo", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Periodos periodos;





    public AlumnosPeriodos() {
    }

    public AlumnosPeriodos(AlumnosPeriodosPK alumnosPeriodosPK) {
        this.alumnosPeriodosPK = alumnosPeriodosPK;
    }

    public AlumnosPeriodos(int institucion, String periodo, String alumno) {
        this.alumnosPeriodosPK = new AlumnosPeriodosPK(institucion, periodo, alumno);
    }

    public AlumnosPeriodosPK getAlumnosPeriodosPK() {
        return alumnosPeriodosPK;
    }

    public void setAlumnosPeriodosPK(AlumnosPeriodosPK alumnosPeriodosPK) {
        this.alumnosPeriodosPK = alumnosPeriodosPK;
    }

    public String getCarrera() {
        return carrera;
    }

    public void setCarrera(String carrera) {
        this.carrera = carrera;
    }

    public Integer getCursosMatriculados() {
        return cursosMatriculados;
    }

    public void setCursosMatriculados(Integer cursosMatriculados) {
        this.cursosMatriculados = cursosMatriculados;
    }

    public Integer getCreditosMatriculados() {
        return creditosMatriculados;
    }

    public void setCreditosMatriculados(Integer creditosMatriculados) {
        this.creditosMatriculados = creditosMatriculados;
    }

    public Integer getCursosRetirados() {
        return cursosRetirados;
    }

    public void setCursosRetirados(Integer cursosRetirados) {
        this.cursosRetirados = cursosRetirados;
    }

    public Integer getCreditosRetirados() {
        return creditosRetirados;
    }

    public void setCreditosRetirados(Integer creditosRetirados) {
        this.creditosRetirados = creditosRetirados;
    }

    public Integer getCursosAprobados() {
        return cursosAprobados;
    }

    public void setCursosAprobados(Integer cursosAprobados) {
        this.cursosAprobados = cursosAprobados;
    }

    public Integer getCreditosAprobados() {
        return creditosAprobados;
    }

    public void setCreditosAprobados(Integer creditosAprobados) {
        this.creditosAprobados = creditosAprobados;
    }

    public Integer getCursosConvalidados() {
        return cursosConvalidados;
    }

    public void setCursosConvalidados(Integer cursosConvalidados) {
        this.cursosConvalidados = cursosConvalidados;
    }

    public Integer getCreditosConvalidados() {
        return creditosConvalidados;
    }

    public void setCreditosConvalidados(Integer creditosConvalidados) {
        this.creditosConvalidados = creditosConvalidados;
    }

    public String getSeccionReferencial() {
        return seccionReferencial;
    }

    public void setSeccionReferencial(String seccionReferencial) {
        this.seccionReferencial = seccionReferencial;
    }

    public Integer getNivelReferencial() {
        return nivelReferencial;
    }

    public void setNivelReferencial(Integer nivelReferencial) {
        this.nivelReferencial = nivelReferencial;
    }

    public BigDecimal getPromedioSemestral() {
        return promedioSemestral;
    }

    public void setPromedioSemestral(BigDecimal promedioSemestral) {
        this.promedioSemestral = promedioSemestral;
    }

    public Integer getOrdenSemestral() {
        return ordenSemestral;
    }

    public void setOrdenSemestral(Integer ordenSemestral) {
        this.ordenSemestral = ordenSemestral;
    }

    public Integer getOrdenNivel() {
        return ordenNivel;
    }

    public void setOrdenNivel(Integer ordenNivel) {
        this.ordenNivel = ordenNivel;
    }

    public BigDecimal getPromedioPonderado() {
        return promedioPonderado;
    }

    public void setPromedioPonderado(BigDecimal promedioPonderado) {
        this.promedioPonderado = promedioPonderado;
    }

    public Integer getOrdenPonderado() {
        return ordenPonderado;
    }

    public void setOrdenPonderado(Integer ordenPonderado) {
        this.ordenPonderado = ordenPonderado;
    }

    public String getDocumentoAutoriza() {
        return documentoAutoriza;
    }

    public void setDocumentoAutoriza(String documentoAutoriza) {
        this.documentoAutoriza = documentoAutoriza;
    }

    public String getResolucionNumero() {
        return resolucionNumero;
    }

    public void setResolucionNumero(String resolucionNumero) {
        this.resolucionNumero = resolucionNumero;
    }

    public Date getResolucionFecha() {
        return resolucionFecha;
    }

    public void setResolucionFecha(Date resolucionFecha) {
        this.resolucionFecha = resolucionFecha;
    }

    public String getCodigoReserva() {
        return codigoReserva;
    }

    public void setCodigoReserva(String codigoReserva) {
        this.codigoReserva = codigoReserva;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Date getFechaMatricula() {
        return fechaMatricula;
    }

    public void setFechaMatricula(Date fechaMatricula) {
        this.fechaMatricula = fechaMatricula;
    }

    public String getCreacionUsuario() {
        return creacionUsuario;
    }

    public void setCreacionUsuario(String creacionUsuario) {
        this.creacionUsuario = creacionUsuario;
    }

    public String getCreacionEstacion() {
        return creacionEstacion;
    }

    public void setCreacionEstacion(String creacionEstacion) {
        this.creacionEstacion = creacionEstacion;
    }

    public Date getCreacionFecha() {
        return creacionFecha;
    }

    public void setCreacionFecha(Date creacionFecha) {
        this.creacionFecha = creacionFecha;
    }

    public String getControlUsuario() {
        return controlUsuario;
    }

    public void setControlUsuario(String controlUsuario) {
        this.controlUsuario = controlUsuario;
    }

    public String getControlEstacion() {
        return controlEstacion;
    }

    public void setControlEstacion(String controlEstacion) {
        this.controlEstacion = controlEstacion;
    }

    public Date getControlFecha() {
        return controlFecha;
    }

    public void setControlFecha(Date controlFecha) {
        this.controlFecha = controlFecha;
    }

    public Collection<AlumnoCursoSeccion> getAlumnoCursoSeccionCollection() {
        return alumnoCursoSeccionCollection;
    }

    public void setAlumnoCursoSeccionCollection(Collection<AlumnoCursoSeccion> alumnoCursoSeccionCollection) {
        this.alumnoCursoSeccionCollection = alumnoCursoSeccionCollection;
    }

    public EstadoRegistros getEstadoRegistros() {
        return estadoRegistros;
    }

    public void setEstadoRegistros(EstadoRegistros estadoRegistros) {
        this.estadoRegistros = estadoRegistros;
    }

    public Alumnos getAlumnos() {
        return alumnos;
    }

    public void setAlumnos(Alumnos alumnos) {
        this.alumnos = alumnos;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (alumnosPeriodosPK != null ? alumnosPeriodosPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AlumnosPeriodos)) {
            return false;
        }
        AlumnosPeriodos other = (AlumnosPeriodos) object;
        if ((this.alumnosPeriodosPK == null && other.alumnosPeriodosPK != null) || (this.alumnosPeriodosPK != null && !this.alumnosPeriodosPK.equals(other.alumnosPeriodosPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.edu.upc.sigu.entities.AlumnosPeriodos[alumnosPeriodosPK=" + alumnosPeriodosPK + "]";
    }

    /**
     * @return the periodos
     */
    public Periodos getPeriodos() {
        return periodos;
    }

    /**
     * @param periodos the periodos to set
     */
    public void setPeriodos(Periodos periodos) {
        this.periodos = periodos;
    }

}
